<?php

/**
 * @desc Редактирование администратора.
 *
 */
class Security_Backend_Admins_Edit extends Kernel_Action_Form_Simple
{
    
    /**
     * @param array
     * 
     * Элементы основной таблицы, которые нужно исключить из формы.
     */
    protected $_exclude = array('password');
    
    /**
     * Таблица, в которой хранится редактируемый элемент.
     *
     * @var string
     */
    protected $_table = 'system_subject';
    
    /**
     * Инициализирует элементы формы.
     *
     */
    protected function _initElements()
    {
        parent::_initElements();
        
        $this->_addElement('name', 'string', array(
            'value' => !$this->_isNew() ? $this->_getAdminName() : '', 
            ));
        $this->_setElementPosition('name', 0);
        $this->_setAsRequired('name', 'email');
    }
    
    /**
    * @desc Возвращает имя администратора.
    * 
    * @return string
    */
    protected function _getAdminName() 
    {
        $query = '
            SELECT 
                   `name` 
              FROM 
                   `system_admin` 
             WHERE 
                   `subject_id` = ' . (int)Application::getRequest()->get('id');
        return database::fetchOne($query);
    }
    
    /**
     * Обновляет существующую запись.
     *
     */
    protected function _update() 
    {
        database::update($this->_table, array_extract($this->_getValues(), array('email')), array($this->_id_field => $this->id));
        database::update('system_admin', array_extract($this->_getValues(), array('name')), array('subject_id' => $this->id));
    }
    
}
